﻿using ExcellentProjectPlus.Dominio.Examenes.Entidades;
using ExcellentProjectPlus.Dominio.Examenes.Repositorios;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ExcellentProjectPlus.Dominio.Examenes.Servicios.RespuestaExamenes
{
    public class ServicioDeAdministracionDeRespuestaExamenes
       : IServicioDeAdministracionDeRespuestaExamenes
    {
        #region Atributos
        IUnidadDeTrabajoExamenes _unidadDeTrabajo;
        #endregion

        #region Constructores
        public ServicioDeAdministracionDeRespuestaExamenes(IUnidadDeTrabajoExamenes unidadDeTrabajo)
        {
            _unidadDeTrabajo = unidadDeTrabajo;
        }
        #endregion

        public IEnumerable<RespuestaExamen> ObtenerRespuestaExamen()
        {
            return _unidadDeTrabajo.RepositorioRespuestaExamen.Obtener();
        }
        public RespuestaExamen ObtenerRespuestaExamenPorId(int id)
        {
            return _unidadDeTrabajo.RepositorioRespuestaExamen.ObtenerPorId(id);
        }
        public void AgregarRespuestaExamen(RespuestaExamen respuestaexamen)
        {
            _unidadDeTrabajo.RepositorioRespuestaExamen.Agregar(respuestaexamen);
            _unidadDeTrabajo.Confirmar();
        }
        public void ModificarRespuestaExamen(RespuestaExamen respuestaexamen)
        {
            _unidadDeTrabajo.RepositorioRespuestaExamen.Modificar(respuestaexamen);
            _unidadDeTrabajo.Confirmar();
        }
        public void EliminarRespuestaExamen(RespuestaExamen respuestaexamen)
        {
            _unidadDeTrabajo.RepositorioRespuestaExamen.Eliminar(respuestaexamen);
            _unidadDeTrabajo.Confirmar();
        }

        public IEnumerable<RespuestaExamen> ObtenerRespuestaExamenesPaginado(int pagina, int tamanio)
        {
            return _unidadDeTrabajo.RepositorioRespuestaExamen.Obtener(orderBy: re => re.OrderBy(resexa => resexa.IdRespuestaExamen),
                 page: pagina, pageSize: tamanio);
        }
    }
}
